package com.csair.seam.domain.service.impl;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.csair.seam.domain.mapper.EquipMapper;
import com.csair.seam.domain.model.entity.Equip;
import com.csair.seam.domain.model.entity.EquipCategoryParam;
import com.csair.seam.domain.model.entity.EquipUserAlterNotice;
import com.csair.seam.domain.model.param.EquipParam;
import com.csair.seam.domain.service.IEquipService;



@Service
public class EquipServiceImpl extends ServiceImpl<EquipMapper, Equip> implements IEquipService {
	@Override
	public List<Equip> findListByUserCode(String userCode) {
		return getBaseMapper().findListByUserCode(userCode);
	}
	
	@Override
	public Equip findMyEquipInfo(String userCode) {
		return getBaseMapper().findMyEquipInfo(userCode);
	}

	@Override
	public Equip findEquipByCode(String equipCode) {
		Equip equip = getBaseMapper().findEquipByCode(equipCode);
		if(equip != null) {
			List<EquipCategoryParam> params = getBaseMapper().findParamsByCategory(equip.getCategory());
			Map<String, Object> freeItemMap = getBaseMapper().findFreeItemsByPK(equip.getId());
			if(!CollectionUtils.isEmpty(params) && freeItemMap != null) {
				for (EquipCategoryParam param : params) {
					Object val = freeItemMap.get("FREEITEM"+param.getParamIndex());
					param.setParamVal(val);
				}
			}
			equip.setParams(params);
		}
		return equip;
	}

	@Override
	public Page<Equip> findEquipPage(EquipParam param) {
		Page<Equip> page = new Page<Equip>(param.getPageIndex(), param.getPageSize());
		page =getBaseMapper().findEquipPage(page, param);
		return page;
	}

	@Override
	public List<EquipUserAlterNotice> findEquipUserAlterNoticeList(String equipCode) {
		return getBaseMapper().findEquipUserAlterNoticeList(equipCode);
	}

	@Override
	public int updateEquipUserAlterNotice(Integer id) {
		return getBaseMapper().updateEquipUserAlterNotice(id);
	}

	@Override
	public List<String> findAllEquipCode(){
		return getBaseMapper().findAllEquipCode();
	}

	@Override
	public List<EquipUserAlterNotice> findEquipUserAlterNoticeByEquipCode(String equipCode) {
		return getBaseMapper().findEquipUserAlterNoticeByEquipCode(equipCode);
	}

	@Override
	public void updateEquipUserAlterNoticeByEquipCode(String equipCode) {
		 getBaseMapper().updateEquipUserAlterNoticeByEquipCode(equipCode);
	}
	@Override
	public void validatedEquipUserAlterNotice(List<String> equipCodes) {
		for(String equipCode:equipCodes){
			List<EquipUserAlterNotice>  equipUserAlterNotices = findEquipUserAlterNoticeByEquipCode(equipCode);
			EquipUserAlterNotice equipUserAlterNoticeNew = equipUserAlterNotices.get(0);
			EquipUserAlterNotice equipUserAlterNoticeOld = equipUserAlterNotices.get(equipUserAlterNotices.size()-1);
			if(StringUtils.equals(equipUserAlterNoticeNew.getPkUserAlter(),equipUserAlterNoticeOld.getUserCode())){
				updateEquipUserAlterNoticeByEquipCode(equipCode);
			}
		}
	}
}
